package com.yonyou.cyxdms.basedata.service.service.questionaire;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yonyou.cyxdms.basedata.client.domains.vo.CareQuestionVO;
import com.yonyou.cyxdms.basedata.client.domains.vo.QuestionVisitInfoVO;
import com.yonyou.cyxdms.basedata.client.domains.vo.QuestionaireVO;
import com.yonyou.cyxdms.basedata.service.dto.questionaire.QueryAnswerDTO;
import com.yonyou.cyxdms.basedata.service.dto.questionaire.QuestionnaireDTO;
import com.yonyou.cyxdms.basedata.service.entity.questionaire.QuestionnairePO;
import com.yonyou.cyxdms.basedata.service.vo.questionaire.*;

import java.util.List;

/**
 * <p>
 * 问卷 服务类
 * </p>
 *
 * @author renwd
 * @since 2019-09-19
 */
public interface QuestionnaireService {

    /**
     * 问卷信息列表
     *
     * @param page
     * @param queryAnswerDTO
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.yonyou.cyxdms.basedata.service.vo.questionaire.QuestionnaireInfoVO>
     * @author dengqiang
     * @since 2019/9/20
     */
    IPage<QuestionnaireInfoVO> queryQuestionnaire(Page<QuestionnaireInfoVO> page, QueryAnswerDTO queryAnswerDTO);

    /**
     *  新增问卷及问卷问题内容
     *
     * @param questionnaireDTO
     * @return java.lang.Integer
     * @author dengqiang
     * @since 2019/9/20
     */
    Integer insertQuestionnaire(QuestionnaireDTO questionnaireDTO);

    /**
     * 设置属性
     *
     * @param questionnairePo
     * @param questionnaireDto
     * @return void
     * @author dengqiang
     * @since 2019/9/22
     */
    void setQuestionnaire(QuestionnairePO questionnairePo,QuestionnaireDTO questionnaireDto);

    /**
     * 修改问卷及问卷问题内容
     *
     * @param questionnaireDTO
     * @return java.lang.Integer
     * @author dengqiang
     * @since 2019/9/22
     */
    Integer updateQuestionnaire(QuestionnaireDTO questionnaireDTO);

    /**
     * 根据id查询问卷信息
     *
     * @param questionnaireId
     * @return com.yonyou.cyxdms.basedata.service.vo.questionaire.QuestionnaireVO
     * @author dengqiang
     * @since 2019/9/22
     */
    QuestionnaireVO queryQuestionnaireById(Long questionnaireId);

    /**
     * 删除问卷及问卷问题内容
     *
     * @param questionnaireId
     * @return java.lang.Integer
     * @author dengqinag
     * @since 2019/9/22
     */
    Integer deleteQuestionnaireById(Long questionnaireId);

    /**
     * 根据问卷id查询问题信息
     *
     * @param page
     * @param questionnaireId
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.yonyou.cyxdms.basedata.service.vo.questionaire.QuestionVisitInfoVO>
     * @author dengqiang
     * @since 2019/9/23
     */
    IPage<QuestionInfoVO> queryQuestionByQuestionnaireId(Page<QuestionInfoVO> page, Long questionnaireId);

    /**
     * 根据问卷类型查询问卷列表信息
     *
     * @param questionnaireType
     * @return java.util.List<com.yonyou.cyxdms.basedata.service.vo.questionaire.QuestionnaireInVO>
     * @author dengqiang
     * @since 2019/9/23
     */
    List<QuestionnaireInVO> queryQuestionnaireByType(String questionnaireType);

    /**
     * 根据问卷id查询问卷信息
     *
     * @param questionaireId
     * @return com.yonyou.cyxdms.basedata.client.domains.vo.QuestionaireVO
     * @author renwd
     * @since 2019/9/25
     */
    QuestionaireVO getQuestionnaireById(Long questionaireId);

    /**
     * 根据questionIdList，questionnaireId查询问卷信息列表
     *
     * @param questionnaireId
     * @return java.util.List<com.yonyou.cyxdms.basedata.service.entity.questionaire.CareQuestionVO>
     * @author dengqiang
     * @since 2019/10/11
     */
    List<CareQuestionVO> queryQuestionByCondition(List<Long> questionIdList, Long questionnaireId);

    /**
     * 根据answerGroupId查询答案列表
     *
     * @param answerGroupId
     * @return java.util.List<com.yonyou.cyxdms.basedata.service.vo.questionaire.AnswerVO>
     * @author dengqiang
     * @since 2019/10/13
     */
    List<AnswerVO> queryAnswerList(Long answerGroupId);

    /**
     * 根据问卷ID查询问题列表
     *
     * @author ysj
     * @date 2019/11/13
     * @param questionnaireId
     * @return
     */
    List<QuestionVisitInfoVO> queryQuestionVisitInfo(Long questionnaireId);
}
